package com.example.computer_component_manager.util

import android.content.Context
import android.widget.Toast
import com.android.volley.Request
import com.android.volley.toolbox.Volley
import com.example.computer_component_manager.activity.LoginActivity
import com.example.computer_component_manager.bean.AdminUserInfo
import com.example.computer_component_manager.volley.MyJsonObjectRequest
import com.example.computer_component_manager.volley.VolleyApplication
import com.google.gson.Gson
import org.json.JSONObject

/**
 * 数据库工具对象
 *
 * @author 1923111015董寺卓
 */

object DbUtil : Volley() {

    // 定义一些常量
    const val API_PREFIX = "http://10.63.6.66:8080"
    private const val LOGIN_VALIDATE_URL = "$API_PREFIX/admin/validate"
    const val GET_CPU_BRANDS_URL = "$API_PREFIX/cpu/brand/all"
    const val GET_GPU_BRANDS_URL = "$API_PREFIX/gpu/brand/all"
    const val GET_ALL_CPU_INFO_URL = "$API_PREFIX/cpu/all"
    const val GET_ALL_GPU_INFO_URL = "$API_PREFIX/gpu/all"
    const val CPU_EDITOR_REQUEST_CODE = 0
    const val GPU_EDITOR_REQUEST_CODE = 1
    const val UPDATE = Request.Method.PUT


    @JvmStatic
    var loginAdminUserInfo: AdminUserInfo? = null

    @JvmStatic
    val gson: Gson = Gson()

    /**
     * 验证登录
     * 最后调用登录成功方法
     *
     * @param context 上下文
     * @param username 用户名
     * @param password 密码（可以加入MD5、加盐等加密进行验证）
     */
    @JvmStatic
    fun validateAdminUserInfo(context: Context, username: String, password: String) {
        // 把name和password加入到JsonObject中
        val jsonObject = JSONObject().put("name", username).put("password", password)
        // 创建请求
        val jsonObjectRequest =
            MyJsonObjectRequest(Request.Method.POST, LOGIN_VALIDATE_URL, jsonObject,
                // 成功情况
                {
                    loginAdminUserInfo = gson.fromJson(it.toString(), AdminUserInfo::class.java)
                    loginAdminUserInfo?.name = username
                    if (context is LoginActivity) context.login()
                },
                // 失败情况
                {
                    Toast.makeText(context, "用户名或密码错误！", Toast.LENGTH_SHORT).show()
                })
        // 添加到队列中
        VolleyApplication.instance.requestQueue.add(jsonObjectRequest)
    }



}